home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Educational / AMS / Source / ArticleFile.m < prev    next >
Text File  |  1995-06-12  |  10KB  |  447 lines

  1.  
  2. /* Programmed  by Krishnaprasad Kamisetty */
  3.  
  4. #import "ArticleFile.h"
  5.  
  6. @implementation ArticleFile
  7.  
  8. /* Initialization Methods */
  9.  
  10. - setPlace:anObject
  11. {
  12.     place = anObject;
  13.     return self;
  14. }
  15.  
  16. - setPages:anObject
  17. {
  18.     pages = anObject;
  19.     return self;
  20. }
  21.  
  22. - setDate:anObject
  23. {
  24.     date = anObject;
  25.     return self;
  26. }
  27.  
  28. - setTitle:anObject
  29. {
  30.     title = anObject;
  31.     return self;
  32. }
  33.  
  34. - setKeyWord:anObject
  35. {
  36.     keyWord = anObject;
  37.     return self;
  38. }
  39.  
  40. - setDueOn:anObject
  41. {
  42.     dueOn = anObject;
  43.     return self;
  44. }
  45.  
  46. - setCountry:anObject
  47. {
  48.     country = anObject;
  49.     return self;
  50. }
  51.  
  52. - setNum:anObject
  53. {
  54.     num = anObject;
  55.     return self;
  56. }
  57.  
  58. - setComments:anObject
  59. {
  60.     comments = anObject;
  61.     return self;
  62. }
  63.  
  64. - setVol:anObject
  65. {
  66.     vol = anObject;
  67.     return self;
  68. }
  69.  
  70. - setLname:anObject
  71. {
  72.     lname = anObject;
  73.     return self;
  74. }
  75.  
  76. - setJournal:anObject
  77. {
  78.     journal = anObject;
  79.     return self;
  80. }
  81.  
  82. - setChkout:anObject
  83. {
  84.     chkout = anObject;
  85.     return self;
  86. }
  87.  
  88. - setFname:anObject
  89. {
  90.     fname = anObject;
  91.     return self;
  92. }
  93.  
  94. - setDirectory:anObject
  95. {
  96.     directory = anObject;
  97.     [directory setStringValue:"Articles" at:0];
  98.     [directory selectTextAt:0];
  99.     return self;
  100. }
  101.  
  102. - setWordField:anObject
  103. {
  104.    wordField = anObject;
  105.    return self;
  106. }
  107.  
  108. - setAbsWindow:anObject
  109. {
  110.     absWindow = anObject;
  111.     [absWindow setFreeWhenClosed:NO];
  112.     [absWindow close];
  113.     return self;
  114. }
  115.  
  116. - setAuthWindow:anObject
  117. {
  118.    authWindow = anObject;
  119.   /*  [authWindow setFreeWhenClosed:NO];
  120.    [authWindow close];  */
  121.    return self;
  122. }
  123.  
  124. - setArticleWindow:anObject
  125. {
  126.    articleWindow = anObject;
  127.    [articleWindow setFreeWhenClosed:NO];
  128.    [articleWindow close];
  129.    return self;
  130. }
  131.  
  132. - setKeyWindow:anObject
  133. {
  134.    keyWindow = anObject;
  135.    [keyWindow setFreeWhenClosed:NO];
  136.    [keyWindow close];
  137.    return self;
  138. }
  139.  
  140. - setNumberWindow:anObject
  141. {
  142.     numberWindow = anObject;
  143.     [numberWindow setFreeWhenClosed:NO];
  144.     [numberWindow close];
  145.     return self;
  146. }
  147.  
  148. - setDirectoryWindow:anObject
  149. {
  150.    directoryWindow = anObject;
  151.    [directory setFreeWhenClosed:NO];
  152.    [directory close];
  153.    return self;
  154. }
  155.  
  156. - setSearchWindow:anObject
  157. {
  158.     searchWindow = anObject;
  159.     [searchWindow setFreeWhenClosed:NO];
  160.     [searchWindow close];
  161.     return self;
  162. }
  163.  
  164. - setArticleNumber:anObject
  165. {
  166.     articleNumber = anObject;
  167.     return self;
  168. }
  169.   
  170. /* The actual Instance methods */
  171.  
  172. - addKeyWordAndClose:sender
  173. {
  174.      const char *temp1;
  175.      char   temp[20];
  176.          
  177.     temp1 = [keyWord stringValueAt:0];
  178.     sprintf(temp,"%s",temp1);
  179.     fprintf(output,"%s.",temp);
  180.     [NXApp stopModal];
  181.     [keyWindow close];
  182.     return self;
  183. }
  184.  
  185. - addMoreKeyWords:sender
  186. {
  187.      const char *temp1;
  188.      char temp[20];
  189.      
  190.     temp1 = [keyWord stringValueAt:0];
  191.     sprintf(temp,"%s",temp1);
  192.     fprintf(output," %s,",temp);
  193.     [keyWord selectTextAt:0];
  194.     return self;
  195. }
  196.  
  197. - addArticleInfoAndClose:sender
  198. {
  199.      const char *temp1;
  200.      char temp[75];
  201.         
  202.     temp1 = [title stringValueAt:0];
  203.     sprintf(temp,"%s",temp1);
  204.     fprintf(output, "\"%s\",",temp);
  205.     temp1 = [journal stringValueAt:0];
  206.     sprintf(temp,"%s",temp1);
  207.     fprintf(output," %s,",temp);
  208.     temp1 = [vol stringValueAt:0];
  209.     sprintf(temp, "%s",temp1);
  210.     fprintf(output," Vol. %s,",temp);
  211.     temp1 = [num stringValueAt:0];
  212.     sprintf(temp, "%s",temp1);
  213.     fprintf(output," No. %s,",temp);
  214.     temp1 = [date stringValueAt:0];
  215.     sprintf(temp, "%s",temp1);
  216.     fprintf(output," %s,",temp);
  217.     temp1 = [pages stringValueAt:0];
  218.     sprintf(temp, "%s",temp1);
  219.     fprintf(output," pp %s,",temp);
  220.     temp1 = [place stringValueAt:0];
  221.     sprintf(temp, "%s",temp1);
  222.     fprintf(output," %s,",temp);
  223.     temp1 = [country stringValueAt:0];
  224.     sprintf(temp, "%s",temp1);
  225.     fprintf(output," %s.\n\n",temp);
  226.     temp1 = [comments stringValueAt:0];
  227.     sprintf(temp, "%s",temp1);
  228.     fprintf(output,"Comments: %s\n\n",temp);
  229.     temp1 = [chkout stringValueAt:0];
  230.     sprintf(temp, "%s",temp1);
  231.     fprintf(output,"Checked Out By: %s\n",temp);
  232.     temp1 = [dueOn stringValueAt:0];
  233.     sprintf(temp, "%s",temp1);
  234.     fprintf(output,"Due On: %s",temp);
  235.  
  236.     [NXApp stopModal];
  237.     [articleWindow close];
  238.     return self;
  239. }
  240.  
  241. - addAbstractAndClose:sender
  242. {
  243.     [NXApp stopModal];
  244.     [absWindow close];
  245.     return self;
  246. }
  247.  
  248. - addAuthorAndClose:sender
  249. {
  250.      const char *temp1;
  251.      char   temp[40];
  252.          
  253.     temp1 = [lname stringValueAt:0];
  254.     sprintf(temp,"%s",temp1);
  255.     fprintf(output," %s,",temp);
  256.     temp1 = [fname stringValueAt:0];
  257.     sprintf(temp,"%s",temp1);
  258.     fprintf(output,"%s.,",temp);
  259.     [NXApp stopModal];
  260.     [authWindow close];
  261.     return self;
  262. }
  263.  
  264. - addMoreAuthors:sender
  265. {
  266.      const char *temp1;
  267.      char temp[20];
  268.      
  269.     temp1 = [lname stringValueAt:0];
  270.     sprintf(temp,"%s",temp1);
  271.     fprintf(output," %s,",temp);
  272.     temp1 = [fname stringValueAt:0];
  273.     sprintf(temp,"%s",temp1);
  274.     fprintf(output," %s,",temp);
  275.     [lname selectTextAt:0];
  276.     return self;
  277. }
  278.  
  279. - warnUser:sender
  280. {
  281.     NXRunAlertPanel("WARNING","The feature that you selected has not yet been implemented","FINE!", NULL,NULL);
  282.     return self;
  283. }
  284.  
  285. - skipAbstract:sender
  286. {
  287.     [NXApp stopModal];
  288.     [absWindow close];
  289.     NXRunAlertPanel("Message","Abstract is Skipped","OK!!", NULL,NULL);
  290.     return self;
  291. }
  292.  
  293. - fileInfoOpen:(int)item
  294. {
  295.    switch (item)
  296.    {
  297.         case AUTHORS:
  298.           [authWindow makeKeyAndOrderFront:self];
  299.         break;
  300.         case ARTICLE:
  301.            [articleWindow makeKeyAndOrderFront:self];
  302.         break;
  303.         case KEYWORDS:
  304.            [keyWindow makeKeyAndOrderFront:self];
  305.         break;
  306.         case ABSTRACT:
  307.               [absWindow makeKeyAndOrderFront:self];
  308.         break;
  309.     default:
  310.             [authWindow makeKeyAndOrderFront:self];
  311.         break;
  312.     }
  313.    return self;
  314. }
  315.  
  316. - clearAllFields
  317. {
  318.      [articleNumber setStringValue:"" at:0];
  319.      [lname setStringValue:"" at:0];
  320.      [fname setStringValue:"" at:0];
  321.      [title setStringValue:"" at:0];
  322.      [journal setStringValue:"" at:0];
  323.      [vol setStringValue:"" at:0];
  324.      [num setStringValue:"" at:0];
  325.      [date setStringValue:"" at:0];
  326.      [pages setStringValue:"" at:0];
  327.      [place setStringValue:"" at:0];
  328.      [country setStringValue:"" at:0];
  329.      [comments setStringValue:"" at:0];
  330.      [chkout setStringValue:"" at:0];
  331.      [dueOn setStringValue:"" at:0];
  332.      [keyWord setStringValue:"" at:0];
  333.      return self;
  334. }
  335.      
  336. - collectInfo:sender
  337. {
  338.       char cpCommand[35], rmCommand[35];
  339.       char dir[15];
  340.       
  341.      sprintf(dir,"~/%s",[directory stringValueAt:0]);
  342.      [directory selectTextAt:0];
  343.      [directoryWindow close];
  344.      sprintf(cpCommand,"cp ~/%s %s/.",[articleNumber stringValueAt:0],dir);  
  345.      sprintf(rmCommand,"rm ~/%s",[articleNumber stringValueAt:0]);
  346.      output = fopen([articleNumber stringValueAt:0], "w");
  347.      [numberWindow close];
  348.      [self  fileInfoOpen:AUTHORS]; 
  349.      [NXApp runModalFor:authWindow];
  350.      [self fileInfoOpen:ARTICLE];
  351.      [NXApp runModalFor:articleWindow];
  352.      [self fileInfoOpen:KEYWORDS];
  353.      fprintf(output,"\n\nKEYWORD(S):\n\n");
  354.      [NXApp runModalFor:keyWindow];
  355.      [self fileInfoOpen:ABSTRACT];
  356.      [NXApp runModalFor:absWindow];
  357.      fclose(output);
  358.      system(cpCommand);
  359.      system(rmCommand);
  360.      NXRunAlertPanel("Add Article","Your article %s has been added to %s directory","OK",
  361.      NULL,NULL,[articleNumber stringValueAt:0],[directory stringValueAt:0]);
  362.      [self clearAllFields];
  363.      return self;
  364. }
  365.  
  366. - deleteInfo:sender
  367. {
  368.      char deleteCommand[20];
  369.      const char  *dir, *artnum;
  370.       
  371.      dir = [directory stringValueAt:0];
  372.      artnum = [articleNumber stringValueAt:0];
  373.      sprintf(deleteCommand,"rm ~/%s/%s",dir, artnum);
  374.      [directoryWindow close];
  375.      [numberWindow close];
  376.      system(deleteCommand);
  377.      NXRunAlertPanel("Delete Article","Your article %s has been deleted from %s directory","OK",NULL,NULL,artnum,dir);
  378.           return self;
  379. }
  380.  
  381. - indexInfo:sender
  382. {
  383.     char indexCommand[25];
  384.     id info;
  385.     NXModalSession *nextModal;
  386.     
  387.     sprintf(indexCommand,"ixBuild %s",[directory stringValueAt:0]);
  388.     [directory selectTextAt:0];
  389.     [directoryWindow close];
  390.     info = NXGetAlertPanel("Indexing Status","Indexing %s directory...Patience!",NULL,NULL,NULL,[directory stringValueAt:0]);
  391.     nextModal = [NXApp beginModalSession:NULL for:info];
  392.     system(indexCommand);
  393.     [NXApp endModalSession:nextModal];
  394.     NXFreeAlertPanel(info);
  395.     NXRunAlertPanel("Index Completion Message","Indexing %s directory completed","Good!",NULL,NULL,[directory stringValueAt:0]);
  396.     return self;
  397. }
  398.  
  399. - updateInfo:sender
  400.    char updateCommand[30];
  401.    id info;
  402.    NXModalSession *nextModal;
  403.       
  404.    sprintf(updateCommand,"Edit ~/%s/%s",[directory stringValueAt:0],[articleNumber stringValueAt:0]);
  405.    info = NXGetAlertPanel("Update"," Edit will open to let you update article %s in %s directory",NULL,NULL,NULL,[articleNumber stringValueAt:0],[directory stringValueAt:0]);
  406.    [articleNumber setStringValue:"" at:0];
  407.    [numberWindow close];
  408.    [directory selectTextAt:0];
  409.    [directoryWindow close];
  410.    nextModal = [NXApp beginModalSession:NULL for:info];
  411.    [NXApp endModalSession:nextModal];   
  412.    NXFreeAlertPanel(info);
  413.    system(updateCommand);
  414.    return self;
  415. }
  416.  
  417. - searchWords:sender
  418. {
  419.    int speakerResult, ignored;
  420.    port_t  appPort;
  421.    
  422.    [directory selectTextAt:0];
  423.    [directoryWindow close];
  424.    [searchWindow close];
  425.    
  426.    /* look up the public port for app's Listener on local host */
  427.    appPort  = NXPortFromName("Librarian",NULL);
  428.    if (appPort == PORT_NULL)
  429.    NXRunAlertPanel("Failure","Couldn't find the Public port for Librarian","Too Bad!",NULL,NULL);
  430.    
  431.    /* connect  the port to the Application's Speaker */
  432.    
  433.   [ [NXApp appSpeaker] setSendPort:appPort];
  434.    
  435.    /* use the openFile:ok:method (Librarian uses this for lookup requests. The others use 
  436.    it for file-opening requests */
  437.    
  438.    speakerResult = [[NXApp appSpeaker] openFile:[wordField stringValueAt:0] ok:&ignored];
  439.    printf ("speakerResult is %d\n",speakerResult);
  440.    if (speakerResult != 0 )
  441.    NXRunAlertPanel("Fiasco","Couldn't pass the message to the Librarian","Hummm",NULL,NULL);
  442.    return self;
  443. }
  444.  
  445. @end
  446.